package com.itheima.operator;

public class OperatorDemo6 {
    public static void main(String[] args) {
        // 目标：逻辑运算符。
        // 1、与：& ： 必须前后条件都是true结果才是true.
        // 需求：找对象，找身高超过160，性别是女的。
        double height = 168.5;
        char sex = '女';
        System.out.println(height > 160 & sex == '女');

        // 2、或：| : 只要前后有一个条件满足，结果就是true.
        // 需求：对象，要么身高超过168.5，要么年龄小于30岁。
        double height2 = 171.2;
        int age = 37;
        System.out.println(height2 > 168.5 | age < 30);

        // 3、非：！ ： 取反
        System.out.println(!(2 > 1)); // false
        System.out.println(!true); // false
        System.out.println(!false); // true

        // 4、异或 ^ : 前后条件一致是false，必须前后条件不一样结果才是true
        System.out.println(true ^ true); // false
        System.out.println(false ^ false); // false
        System.out.println(false ^ true); // true
        System.out.println(true ^ false); // true

        // 5、&& : 短路与，必须都是true结果才是true , 但是&&发现左边是false右边直接不执行。
        // & 即便左边是false依然执行右边。
        int i = 10;
        int j = 666;
        // System.out.println(i < 1 & ++j > 333); // false
        System.out.println(i < 1 && ++j > 333); // false
        System.out.println(j);

        // 6、|| 短路或：前后只要有一个是true结果就是true,但是||发现左边是true右边直接不执行
        // | 即便左边是true依然执行右边。
        int m = 100;
        int n = 999;
        //System.out.println(m > 1 | ++n > 198); // true
        System.out.println(m > 1 || ++n > 198); // true
        System.out.println(n);
    }
}
